package com.amber.proyecto.envia.imagenes.sw.mibd;

import java.util.ArrayList;

import android.R.array;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import com.amber.proyecto.envia.imagenes.sw.utils.CantCatImagen;
import com.amber.proyecto.envia.imagenes.sw.utils.Categoria;
import com.amber.proyecto.envia.imagenes.sw.utils.Correo;
import com.amber.proyecto.envia.imagenes.sw.utils.Estado;
import com.amber.proyecto.envia.imagenes.sw.utils.Imagen;
import com.amber.proyecto.envia.imagenes.sw.utils.ImagenParcelable;

public class BD extends SQLiteOpenHelper{
	private static final String nombreBD = "enviaimagen.db";
	 private static final int DATABASE_VERSION = 4;
	private static final String nombreTablaCategorias = "categorias";
	private static final String nombreTablaImagenes = "imagenes";
	private static final String nombreTablaContenido = "contenido";
	private static final String nombreTablaCorreo = "correo";
	private static final String nombreTablaEstados = "estados";
	private static final String nombreTablaConfiguracion = "configuracion";
	private static final String tablaImagenes = "create table "+ nombreTablaImagenes+"(" +
			"nombreImagen text not null, " +
			"latitud real not null," +
			"longitud real not null," +
			"idCategoria integer not null," +
			"idEstado integer not null," +			
			"comentario text," +
			"calificacion float,"+
			"correoUsuario text,"+
			"constraint nombrePK primary key(nombreImagen) );";
	private static final String tablaContenido = "create table "+nombreTablaContenido+"("+
			"nombreImagen text not null, "+
			"parte1 text not null, "+
			"parte2 text not null, "+
			"parte3 text not null, "+
			"parte4 text not null, "+
			"parte5 text not null, "+
			"parte6 text not null, "+
			"parte7 text not null, "+
			"parte8 text not null, "+
			"parte9 text not null, "+
			"constraint nombreImagenPK primary key(nombreImagen)," +
			"constraint nombreImagenFK foreign key(nombreImagen) " +
			"references "+nombreTablaImagenes+"(nombreImagen) );";
			
	private static final String tablaCategorias = "create table "+nombreTablaCategorias+ "(" +
			"idCategoria integer not null," +
			"nombreCategoria text not null," +
			"constraint idCategoriaPK primary key(idCategoria) );";
	
	private static final String tablaCorreos = "create table "+nombreTablaCorreo+"(" +
			"_id integer primary key, " +
			"correoUsuario text not null," +
			"correoContacto text not null," +
			"nombreImagen text," +
			"constraint nombreImagenFK foreign key(nombreImagen) references " +
			nombreTablaImagenes+"(nombreImagen))";
	
	private static final String tablaEstados = "create table "+nombreTablaEstados+"("+
			"idEstado integer primary key, "+
			"nombreEstado text not null,"+
			"inicialesEstado text," +
			"latitud real," +
			"longitud real)";
	
	private static final String tablaConfiguracion = "create table "+nombreTablaConfiguracion+"("+
			"_id integer primary key, "+
			"correoSinInternet text,"+
			"resolucionW integer, "+
			"resolucionH integer," +
			"idEstado integer) ";

	public BD(Context context, String name, CursorFactory factory, int version) {
		super(context, name, factory, DATABASE_VERSION);
	}
	public BD(Context context){
		super(context, nombreBD, null,DATABASE_VERSION);
	}
	


	public void onCreate(SQLiteDatabase db) {

		db.execSQL(tablaCategorias);
		db.execSQL(tablaImagenes);
		db.execSQL(tablaCorreos);
		db.execSQL(tablaEstados);
		db.execSQL(tablaConfiguracion);
		db.execSQL("insert into configuracion(correoSinInternet, resolucionW, resolucionH,idEstado) values('',0,0,0)");
		//db.execSQL(tablaContenido);
		insertaCategorias(db);	
		insertaEstados(db);
		
	}
//TODO revisar que pasa si hay imágenes en la bd 
	

	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		if (newVersion > oldVersion){
			Log.w("Mensaje", "new "+newVersion+" old"+oldVersion);
			db.execSQL(tablaConfiguracion);
			db.execSQL("insert into configuracion(correoSinInternet, resolucionW, resolucionH,idEstado) values('',0,0,0)");
		}
		
	}	

	public void creaTabla(){
		SQLiteDatabase db = this.getWritableDatabase();
		db.execSQL("DROP TABLE IF EXISTS " + nombreTablaConfiguracion);
		db.execSQL(tablaConfiguracion);
		db.execSQL("insert into configuracion(correoSinInternet, resolucionW, resolucionH,idEstado) values('',0,0,0)");
		db.close();		
	}
	
	public void actualizaResolucion(int w, int h){
		SQLiteDatabase db = this.getWritableDatabase();
		db.execSQL("update "+nombreTablaConfiguracion+" set resolucionW = "+w+", resolucionH = "+h);
		db.close();	
	}
	
	public void actualizaIdEstado(int idEstado){
		SQLiteDatabase db = this.getWritableDatabase();
		db.execSQL("update "+nombreTablaConfiguracion+" set idEstado = "+idEstado);
		db.close();		
	}
	public void actualizaCorreoSinInternet(String correo){
		SQLiteDatabase db = this.getWritableDatabase();
		db.execSQL("update "+nombreTablaConfiguracion+" set correoSinInternet = '"+correo+"'");
		db.close();			
	}
	
	private void insertaCategorias(SQLiteDatabase db){

		ContentValues cv = new ContentValues();
		cv.put("idCategoria", 1);
		cv.put("nombreCategoria", "Hotel");
		db.insert(nombreTablaCategorias, null, cv);
		cv.put("idCategoria", 2);
		cv.put("nombreCategoria", "Museo");
		db.insert(nombreTablaCategorias, null, cv);	
		cv.put("idCategoria", 3);
		cv.put("nombreCategoria", "Mercado");
		db.insert(nombreTablaCategorias, null, cv);
		cv.put("idCategoria", 4);
		cv.put("nombreCategoria", "Sitio Turístico");
		db.insert(nombreTablaCategorias, null, cv);
		cv.put("idCategoria", 5);
		cv.put("nombreCategoria", "Artesanías");
		db.insert(nombreTablaCategorias, null, cv);
		cv.put("idCategoria", 6);
		cv.put("nombreCategoria", "Balneario");
		db.insert(nombreTablaCategorias, null, cv);		
		cv.put("idCategoria", 7);
		cv.put("nombreCategoria", "Cascada");
		db.insert(nombreTablaCategorias, null, cv);	
		cv.put("idCategoria", 8);
		cv.put("nombreCategoria", "Gruta");	
		db.insert(nombreTablaCategorias, null, cv);	
		cv.put("idCategoria", 9);
		cv.put("nombreCategoria", "Lago-Laguna");	
		db.insert(nombreTablaCategorias, null, cv);	
		cv.put("idCategoria", 10);
		cv.put("nombreCategoria", "Monumento Colonial");
		db.insert(nombreTablaCategorias, null, cv);	
		cv.put("idCategoria", 11);
		cv.put("nombreCategoria", "Parque Nacional");
		db.insert(nombreTablaCategorias, null, cv);	
		cv.put("idCategoria", 12);
		cv.put("nombreCategoria", "Playa");
		db.insert(nombreTablaCategorias, null, cv);	
		cv.put("idCategoria", 13);
		cv.put("nombreCategoria", "Zona Arqueológica");
		db.insert(nombreTablaCategorias, null, cv);	
		cv.put("idCategoria", 14);
		cv.put("nombreCategoria", "Otro");			
		db.insert(nombreTablaCategorias, null, cv);				
	
	}
	
	private void insertaEstados(SQLiteDatabase db){
		ContentValues cv = new ContentValues();
		cv.put("idEstado", 1);
		cv.put("nombreEstado", "Aguascalientes");
		cv.put("inicialesEstado", "Ags.");
		cv.put("latitud", 21.886987);
		cv.put("longitud",-102.290611);
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 2);
		cv.put("nombreEstado", "Baja California");
		cv.put("inicialesEstado", "BC");
		cv.put("latitud", 31.222197);
		cv.put("longitud",-115.224609);		
		db.insert(nombreTablaEstados, null, cv);		
		
		cv.put("idEstado", 3);		
		cv.put("nombreEstado", "Baja California Sur");
		cv.put("inicialesEstado", "BCS");
		cv.put("latitud", 26.509905);
		cv.put("longitud",-111.555176);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 4);		
		cv.put("nombreEstado", "Campeche");
		cv.put("inicialesEstado", "Camp.");
		cv.put("latitud", 19.836799);
		cv.put("longitud",-90.534897);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 5);		
		cv.put("nombreEstado", "Coahuila de Zaragoza");
		cv.put("inicialesEstado", "Coah.");
		cv.put("latitud", 27.371767);
		cv.put("longitud",-101.755371);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 6);		
		cv.put("nombreEstado", "Colima");
		cv.put("inicialesEstado", "Col.");
		cv.put("latitud", 19.249895);
		cv.put("longitud",-103.733597);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 7);		
		cv.put("nombreEstado", "Chiapas");
		cv.put("inicialesEstado", "Chis.");
		cv.put("latitud", 16.951724);
		cv.put("longitud",-93.120117);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 8);		
		cv.put("nombreEstado", "Chihuahua");
		cv.put("inicialesEstado", "Chih.");
		cv.put("latitud", 28.655646);
		cv.put("longitud",-106.070251);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 9);		
		cv.put("nombreEstado", "Distrito Federal");
		cv.put("inicialesEstado", "DF");
		cv.put("latitud", 19.252488);
		cv.put("longitud",-99.101143);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 10);		
		cv.put("nombreEstado", "Durango");
		cv.put("inicialesEstado", "Dgo.");
		cv.put("latitud", 24.033295);
		cv.put("longitud",-104.653358);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 11);		
		cv.put("nombreEstado", "Guanajuato");
		cv.put("inicialesEstado", "Gto.");
		cv.put("latitud", 21.022181);
		cv.put("longitud",-101.25824);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 12);		
		cv.put("nombreEstado", "Guerrero");
		cv.put("inicialesEstado", "Gro.");
		cv.put("latitud", 17.539297);
		cv.put("longitud",-99.53064);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 13);		
		cv.put("nombreEstado", "Hidalgo");
		cv.put("inicialesEstado", "Hgo.");
		cv.put("latitud", 20.215811);
		cv.put("longitud",-98.756104);	
		db.insert(nombreTablaEstados, null, cv);		
		
		cv.put("idEstado", 14);		
		cv.put("nombreEstado", "Jalisco");
		cv.put("inicialesEstado", "Jal.");
		cv.put("latitud", 20.396123);
		cv.put("longitud",-103.875732);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 15);		
		cv.put("nombreEstado", "México");
		cv.put("inicialesEstado", "Mex.");
		cv.put("latitud", 19.606369);
		cv.put("longitud",-99.711914);	
		db.insert(nombreTablaEstados, null, cv);	
		
		cv.put("idEstado", 16);		
		cv.put("nombreEstado", "Michoacán de Ocampo");
		cv.put("inicialesEstado", "Mich.");
		cv.put("latitud", 19.828725);
		cv.put("longitud",-101.700439);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 17);		
		cv.put("nombreEstado", "Morelos");
		cv.put("inicialesEstado", "Mor.");
		cv.put("latitud", 18.739906);
		cv.put("longitud",-99.102173);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 18);		
		cv.put("nombreEstado", "Nayarit");
		cv.put("inicialesEstado", "Nay.");
		cv.put("latitud", 21.856401);
		cv.put("longitud",-104.842529);	
		db.insert(nombreTablaEstados, null, cv);	
		
		cv.put("idEstado", 19);		
		cv.put("nombreEstado", "Nuevo León");
		cv.put("inicialesEstado", "NL");
		cv.put("latitud", 25.819672);
		cv.put("longitud",-99.942627);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 20);		
		cv.put("nombreEstado", "Oaxaca");
		cv.put("inicialesEstado", "Oax.");
		cv.put("latitud", 17.065975);
		cv.put("longitud",-96.72123);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 21);		
		cv.put("nombreEstado", "Puebla");
		cv.put("inicialesEstado", "Pue.");
		cv.put("latitud", 19.054979);
		cv.put("longitud",-98.2061);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 22);		
		cv.put("nombreEstado", "Querétaro");
		cv.put("inicialesEstado", "Qro.");
		cv.put("latitud", 20.601293);
		cv.put("longitud",-100.387573);	
		db.insert(nombreTablaEstados, null, cv);	
		
		cv.put("idEstado", 23);		
		cv.put("nombreEstado", "Quintana Roo");
		cv.put("inicialesEstado", "Q. Roo");
		cv.put("latitud", 19.40443);
		cv.put("longitud",-88.461914);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 24);		
		cv.put("nombreEstado", "San Luis Potosí");
		cv.put("inicialesEstado", "SLP");
		cv.put("latitud", 22.167058);
		cv.put("longitud",-100.986328);	
		db.insert(nombreTablaEstados, null, cv);	
		
		cv.put("idEstado", 25);		
		cv.put("nombreEstado", "Sinaloa");
		cv.put("inicialesEstado", "Sin.");
		cv.put("latitud", 25.344026);
		cv.put("longitud",-107.468262);	
		db.insert(nombreTablaEstados, null, cv);	
		
		cv.put("idEstado", 26);		
		cv.put("nombreEstado", "Sonora");
		cv.put("inicialesEstado", "Son.");
		cv.put("latitud", 29.745302);
		cv.put("longitud",-110.34668);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 27);		
		cv.put("nombreEstado", "Tabasco");
		cv.put("inicialesEstado", "Tab.");
		cv.put("latitud", 18.011386);
		cv.put("longitud",-92.93335);	
		db.insert(nombreTablaEstados, null, cv);	
		
		cv.put("idEstado", 28);		
		cv.put("nombreEstado", "Tamaulipas");
		cv.put("inicialesEstado", "Tamps.");
		cv.put("latitud", 24.627045);
		cv.put("longitud",-98.811035);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 29);		
		cv.put("nombreEstado", "Tlaxcala");
		cv.put("inicialesEstado", "Tlax.");
		cv.put("latitud", 19.513198);
		cv.put("longitud",-98.217773);	
		db.insert(nombreTablaEstados, null, cv);	
		
		cv.put("idEstado", 30);		
		cv.put("nombreEstado", "Veracruz de Ignacio de la Llave");
		cv.put("inicialesEstado", "Ver.");
		cv.put("latitud", 19.590844);
		cv.put("longitud",-96.907654);	
		db.insert(nombreTablaEstados, null, cv);
		
		cv.put("idEstado", 31);		
		cv.put("nombreEstado", "Yucatán");
		cv.put("inicialesEstado", "Yuc.");
		cv.put("latitud", 20.817741);
		cv.put("longitud",-89.093628);	
		db.insert(nombreTablaEstados, null, cv);	
		
		cv.put("idEstado", 32);		
		cv.put("nombreEstado", "Zacatecas");
		cv.put("inicialesEstado", "Zac.");
		cv.put("latitud", 22.93816);
		cv.put("longitud",-102.612305);	
		db.insert(nombreTablaEstados, null, cv);	

	}

	public void insertaCategoria(int idCategoria, String nombreCategoria){
		SQLiteDatabase db = this.getWritableDatabase();
		ContentValues cv = new ContentValues();
		cv.put("idCategoria", idCategoria);
		cv.put("nombreCategoria", nombreCategoria);
		db.insert(nombreTablaCategorias, null, cv);	
		db.close();
	}
	
	public void insertaCorreos(String correoUsuario, String correoContacto, String nombreImagen){
		SQLiteDatabase db = this.getWritableDatabase();
		ContentValues cv = new ContentValues();
		cv.put("correoUsuario", correoUsuario);
		cv.put("correoContacto", correoContacto);		
		cv.put("nombreImagen", nombreImagen);
		db.insert(nombreTablaCorreo, null, cv);	
		db.close();
	}	
	
	public int obtieneEstado(){
		int total;
		SQLiteDatabase db=this.getReadableDatabase();
		Cursor cursor=db.rawQuery("SELECT idEstado from "+ nombreTablaConfiguracion, null);
		total = cursor.getCount();
		return total;
	}
	
	public ArrayList<Correo> obtieneCorreos(){
		SQLiteDatabase db=this.getReadableDatabase();
		 ArrayList<Correo> alCorreos = new ArrayList<Correo>();
		 Cursor cursor=db.rawQuery("SELECT correoUsuario, correoContacto, nombreImagen from "+ nombreTablaCorreo, null);	 
		 if (cursor.moveToFirst()) {
	        do {
	        	Correo correo = new Correo();
	        	correo.setCorreoUsuario(cursor.getString(0));
	        	correo.setCorreoContacto(cursor.getString(1));
	        	correo.setNombreImagen(cursor.getString(2));
			   alCorreos.add(correo);
		   } while (cursor.moveToNext());
		}
			  cursor.close();
			  db.close();
		 return alCorreos;
	}
	
	public int cuentaRegCorreos(){
		int total;
		SQLiteDatabase db = this.getReadableDatabase();
		Cursor cursor = db.rawQuery("SELECT * from "+nombreTablaCorreo, null);
		total = cursor.getCount();
		cursor.close();
		db.close();
		return total;
	}
	
	public void borraCorreos(){
		SQLiteDatabase db = this.getWritableDatabase();
		db.execSQL("delete from "+nombreTablaCorreo);
		db.close();
		
	}
	
	public ArrayList<Categoria> obtieneCategorias(){
		 SQLiteDatabase db=this.getReadableDatabase();
		 ArrayList<Categoria> categorias = new ArrayList<Categoria>();
		 Cursor cursor=db.rawQuery("SELECT * from "+ nombreTablaCategorias, null);	 
		 if (cursor.moveToFirst()) {
	        do {
	        	Categoria cat = new Categoria();
	        	cat.setIdCategoria(Integer.parseInt(cursor.getString(0)));
	        	cat.setNombreCategoria(cursor.getString(1));
			   categorias.add(cat);
		   } while (cursor.moveToNext());
		}
			  cursor.close();
			  db.close();
		 return categorias;
	}

	public ArrayList<Imagen> obtieneImagenes(){
		SQLiteDatabase db = this.getReadableDatabase();
		ArrayList<Imagen> imagenes = new ArrayList<Imagen>();
		Cursor cursor = db.rawQuery("SELECT * from "+nombreTablaImagenes, null);
		if (cursor.moveToFirst()) {
	        do {
	        	Imagen ima = new Imagen();
	        	ima.setNombreImagen(cursor.getString(0));
	        	ima.setLatitud(cursor.getDouble(1));
	        	ima.setLongitud(cursor.getDouble(2));
	        	ima.setIdCategoria(cursor.getInt(3));
	        	ima.setComentario(cursor.getString(4));
	        	ima.setCalificacion(cursor.getFloat(5));
	        	ima.setCorreoUsuario(cursor.getString(6));
			    imagenes.add(ima);
		   } while (cursor.moveToNext());
		}
			  cursor.close();
			  db.close();
		 return imagenes;
	}
	
	public String obtieneContenidoSinInt(int tot, String nombreImagen){

		StringBuilder contenido = new StringBuilder();
			for (int i=0; i<tot; i++){
               SQLiteDatabase db = this.getReadableDatabase();
			   Cursor cursor = db.rawQuery("SELECT parte"+(i+1)+" from "+nombreTablaContenido+ " where nombreImagen = '"+nombreImagen+"'", null);
			   //Log.i("query", "SELECT parte"+(i+1)+" from "+nombreTablaContenido+ " where nombreImagen = '"+nombreImagen+"'");

			   if (cursor.moveToFirst()) {
					   contenido.append(cursor.getString(0));
					   Log.i("Parte"+(i+1),contenido.toString()+" tam:"+contenido.length());
			   }
			   cursor.close();
		}

			Log.i("Contenido total: ",contenido.toString()+" tam final: "+contenido.length());
		return contenido.toString();
	}
	
	public Imagen obtieneImagen(){
		SQLiteDatabase db = this.getReadableDatabase();
    	Imagen ima = new Imagen();
		Cursor cursor = db.rawQuery("SELECT * from "+nombreTablaImagenes+" limit 1", null);
		if (cursor.moveToFirst()) {
	        do {

	        	ima.setNombreImagen(cursor.getString(0));
	        	ima.setLatitud(cursor.getDouble(1));
	        	ima.setLongitud(cursor.getDouble(2));
	        	ima.setIdCategoria(cursor.getInt(3));
	        	ima.setIdEstado(cursor.getInt(4));
	        	ima.setComentario(cursor.getString(5));
	        	ima.setCalificacion(cursor.getFloat(6));
	        	ima.setCorreoUsuario(cursor.getString(7));
	        } while (cursor.moveToNext());
		}
		  cursor.close();
		  db.close();
		  return ima;
	}
	
	public Estado obtieneEstado(int idEstado){
		SQLiteDatabase db = this.getReadableDatabase();
    	Estado estado = new Estado();
		Cursor cursor = db.rawQuery("SELECT * from "+nombreTablaEstados+" where idEstado = "+idEstado, null);
		if (cursor.moveToFirst()) {
	        do {
	        	estado.setIdEstado(cursor.getInt(0));
	        	estado.setNombreEstado(cursor.getString(1));
	        	estado.setInicialesEstado(cursor.getString(2));
	        	estado.setLatitud(cursor.getDouble(3));
	        	estado.setLongitud(cursor.getDouble(4));
	        } while (cursor.moveToNext());
		}
		//Log.i("Estado Seleccionado: ", estado.getIdEstado()+" Nomb:"+estado.getNombreEstado()+" Lat:"+estado.getLatitud());
		  cursor.close();
		  db.close();
	        
		  return estado;
	
	}
	
	public Imagen obtieneImagenBorra(){
		SQLiteDatabase db = this.getReadableDatabase();
    	Imagen ima = new Imagen();
		Cursor cursor = db.rawQuery("SELECT * from "+nombreTablaImagenes+" limit 1", null);
		if (cursor.moveToFirst()) {
	        do {

	        	ima.setNombreImagen(cursor.getString(0));
	        	ima.setLatitud(cursor.getDouble(1));
	        	ima.setLongitud(cursor.getDouble(2));
	        	ima.setIdCategoria(cursor.getInt(3));
	        	ima.setComentario(cursor.getString(4));
	        	ima.setCalificacion(cursor.getFloat(5));
        	
			    borraImagen(cursor.getString(0));
			    //borraContenido(cursor.getString(0));
		   } while (cursor.moveToNext());
		}
		
			  cursor.close();
			  db.close();
		 return ima;
	}
	
	public ArrayList<ImagenParcelable> buscaLugares(ArrayList<String> lugares){
		SQLiteDatabase db = this.getReadableDatabase();
		ArrayList<ImagenParcelable> imagenes = new ArrayList<ImagenParcelable>();
		StringBuffer query = new StringBuffer("SELECT * from "+nombreTablaImagenes+" where idCategoria = ");
		if (lugares.size() == 1){
			query.append(lugares.get(0));
		}else{
			for (int i=1;i<=lugares.size(); i++ ){
				query.append(lugares.get(i-1));
				if (i<lugares.size()){
					query.append(" or idCategoria =  ");
				}
			}
		}
		Cursor cursor = db.rawQuery(query.toString(), null);	
		if (cursor.moveToFirst()) {
	        do {
	        	ImagenParcelable ima = new ImagenParcelable();
	        	ima.setNombreImagen(cursor.getString(0));
	        	ima.setLatitud(cursor.getDouble(1));
	        	ima.setLongitud(cursor.getDouble(2));
	        	ima.setIdCategoria(cursor.getInt(3));
	        	ima.setComentario(cursor.getString(4));
	        	ima.setCalificacion(cursor.getFloat(5));
			    imagenes.add(ima);
		   } while (cursor.moveToNext());
		}
		cursor.close();
		db.close();
		return imagenes;
	}
	
	
	public int cuentaRegImagenes(){
		int total;
		SQLiteDatabase db = this.getReadableDatabase();
		Cursor cursor = db.rawQuery("SELECT * from "+nombreTablaImagenes, null);
		total = cursor.getCount();
		cursor.close();
		db.close();
		return total;
	}
	
	public ArrayList<CantCatImagen> cantidadCatImagenes(){
		SQLiteDatabase db = this.getReadableDatabase();
		ArrayList<CantCatImagen> alCantidad = new ArrayList<CantCatImagen>();
		Cursor cursor = db.rawQuery("select i.idCategoria, c.nombreCategoria, count(i.idCategoria) from imagen i, categoria c where i.idCategoria = c.idCategoria group by idCategoria", null);

		if (cursor.moveToFirst()) {
	        do {
	    		CantCatImagen cantidad = new CantCatImagen();	        	
	        	cantidad.setIdCategoria(cursor.getInt(0));
	        	cantidad.setNombreCategoria(cursor.getString(1));
	        	cantidad.setCantidadCategoria(cursor.getInt(2));
	        	alCantidad.add(cantidad);
        	
		   } while (cursor.moveToNext());
		}
		
		  cursor.close();
		  db.close();
		return alCantidad;
	}
	
	public ArrayList<String> obtieneEstados(){
		SQLiteDatabase db = this.getReadableDatabase();
		ArrayList<String> estado = new ArrayList<String>();
		Cursor cursor = db.rawQuery("select nombreEstado from "+nombreTablaEstados, null);

		if (cursor.moveToFirst()) {
	        do {
	        	estado.add(cursor.getString(0));
		   } while (cursor.moveToNext());
		}
		
		  cursor.close();
		  db.close();
		return estado;		
	}
	
	public void insertaContenido(String nombreImagen, String[] contenido){
		SQLiteDatabase db = this.getWritableDatabase();
		ContentValues cv = new ContentValues();
		cv.put("nombreImagen", nombreImagen);
		cv.put("parte1", contenido[0]);
		cv.put("parte2", contenido[1]);
		cv.put("parte3", contenido[2]);
		cv.put("parte4", contenido[3]);
		cv.put("parte5", contenido[4]);
		cv.put("parte6", contenido[5]);
		cv.put("parte7", contenido[6]);
		cv.put("parte8", contenido[7]);
		cv.put("parte9", contenido[8]);
		db.insert(nombreTablaContenido, null, cv);
		db.close();
	}
	public void insertaImagen(String nombreImagen, double latitud, double longitud, int idCategoria, int idEstado, String comentario, float califica, String correoUsuario){
		SQLiteDatabase db = this.getWritableDatabase();
		ContentValues cv = new ContentValues();
		cv.put("nombreImagen", nombreImagen);
		cv.put("latitud", latitud);
		cv.put("longitud", longitud);
		cv.put("idCategoria", idCategoria);
		cv.put("idEstado", idEstado);		
		cv.put("comentario", comentario);
		cv.put("calificacion", califica);
		cv.put("correoUsuario", correoUsuario);
		db.insert(nombreTablaImagenes, null, cv);
		db.close();
	}
	
	public void borraCategorias(){
		SQLiteDatabase db = this.getWritableDatabase();
		db.execSQL("delete from "+nombreTablaCategorias);
		db.close();
		
	}
	
	public void borraImagen(String nombImagen){
		SQLiteDatabase db = this.getWritableDatabase();
		db.execSQL("delete from "+nombreTablaImagenes+" where nombreImagen = '"+nombImagen+"';");
		db.close();
			
	}
	
	public void borraContenido(String nombreImagen){
		SQLiteDatabase db = this.getWritableDatabase();
		db.execSQL("delete from "+nombreTablaContenido+" where nombreImagen = '"+nombreImagen+"';");
		db.close();		
	}

	public void borraImagenes(){
		SQLiteDatabase db = this.getWritableDatabase();
		db.execSQL("delete from "+nombreTablaImagenes);
		db.close();
	}
	

}
